<?php

    require_once "Message.class.php" ;
    require_once CORMO_DIR_CORE."Connection.class.php" ;

   /**
    * Definicion del Driver que se encargara del manejo de la
    * Persistencia de cada uno de los Objetos del Sistema que
    * lo esta Implementado.
    *
    * @category cormo
    * @package Core
    * @author Germán Dario Peraferrer <gperaferrer@gmail.com>
    * @copyright Copyright (c) 2007 Germán Dario Peraferrer - Beetec
    * @version 1.0 Beta
    * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
    * @link http://code.google.com/p/cormoframework/
    * @link http://www.beetec.com.ar
    */
    abstract class DriverAccess  {

        static private $config;

       /**
        * Inicializacion del Driver Acces, toma los datos de configuracion de la
        * conexion que se encuentran en schema.php.
        *
        * @param string
        * @return bool
        */
        public static function init($connection)	{
            self::$config = new Connection($connection);
            return true;
        }
    
       /**
        * Obtenemos un Objeto de tipo Connection con la configuracion de la Conexion del Driver
        *
        * @return Connection
        */
        public static function getConfig()  {
            return self::$config;
        }

       /**
        * Nos retorna el DSN para la conexion PDO a la Base de Datos
        *
        * @return string
        */
        public static function getDsn() {
            switch(self::getConfig()->getType()) {
                case 'oci': $return = self::getConfig()->getType().':dbname='.self::getConfig()->getHost().'/'.self::getConfig()->getDbName();
                    break;

                default: $return = self::getConfig()->getType().':host='.self::getConfig()->getHost().';dbname='.self::getConfig()->getDbName();
            }

            return $return;
        }

       /**
        * Obtiene el Usuario de la Basa de Datos.
        *
        * @return string
        */
        public static function getUser()	{
            return self::getConfig()->getUser();
        }

       /**
        * Obtiene la Clave del Usuario de la Basa de Datos.
        *
        * @return string
        */
        public static function getPassword()	{
            return self::getConfig()->getPassword();
        }

       /**
        * Obtiene la Configuracion PDO sobre el modo de login a la Basa de Datos.
        *
        * @return string
        */
        public static function getPersistent()	{
            return self::getConfig()->getPersistent();
        }
    
       /**
        * Verifica si la configuración de la conexión posee los datos basicos para realizar un intento.
        *
        * @return boolean
        */
        public static function isValidConfig()	{
            return self::getConfig()->isValidConfig();
        }
    
    }

?>